/**
 * @overview 定义坐标系轴刻度的配置类
 * @component#iChart.Scale
 * @extend#iChart.Component
 */
iChart.Scale = iChart.extend(iChart.Component, {
	configure : function() {

		/**
		 * invoked the super class's configuration
		 */
		iChart.Scale.superclass.configure.apply(this, arguments);

		/**
		 * indicate the component's type
		 */
		this.type = 'scale';

		this.set({
			/**
			 * @cfg {String} 轴刻度的位置，一般由坐标系给出。(默认为'left')
			 */
			position:'left',
			/**
			 * @cfg {String} 轴刻度的方向，一般由坐标系给出。(默认为'h') 
			 * 可选值:
			 * @Option 'h' :水平的
			 * @Option 'v' :垂直的
			 */
			which : 'h',
			/**
			 * @cfg {Number} 基准坐标值。用于刻度基线不是从0开始的情况下设置。(默认为0)
			 */
			basic_value:0,
			/**
			 * @cfg {Boolean} 当<link>iChart.Coordinate2D</link>配置为true时，指示是否网格与刻度保持一致。(默认为true)
			 */
			scale2grid : true,
			/**
			 * @inner {Number}
			 */
			distance : undefined,
			/**
			 * @cfg {Number} 起始刻度值。(默认为0)
			 */
			start_scale : 0,
			/**
			 * @cfg {Number} 结束刻度值。这个值若没有给定，则用max_scale作为结束的刻度值。(默认为undefined)
			 */
			end_scale : undefined,
			/**
			 * @cfg {Number} 图表中最小值，一般由数据源决定，不需要给出。(默认为undefined)
			 */
			min_scale : undefined,
			/**
			 * @cfg {Number} 图表中最大值，一般由数据源决定，不需要给出。(默认为undefined)
			 */
			max_scale : undefined,
			/**
			 * @cfg {Number} 刻度值的间距值，要小于(最大值-最小值)。(默认为undefined)
			 */
			scale_space : undefined,
			/**
			 * @cfg {Number} 刻度的数量。(默认为5)
			 */
			scale_share : 5,
			/**
			 * @cfg {Boolean} 是否显示刻度线。(默认为true)
			 */
			scale_enable : true,
			/**
			 * @cfg {Number} 刻度线的粗细。单位px。(默认为1)
			 */
			scale_size : 1,
			/**
			 * @cfg {Number} 刻度的长短。单位px。(默认为4)
			 */
			scale_width : 4,
			/**
			 * @cfg {String} 刻度线的颜色。(默认为4)
			 */
			scale_color : '#333333',
			/**
			 * @cfg {String} 刻度线相对于坐标轴的对齐方式，。(默认为'center')。
			 * 当配置项which为'h'(水平)时，可选值有：
			 * @Option 'left'
			 * @Option 'center'
			 * @Option 'right' 
			 * 当配置项which为'v'(垂直)时，可选值有：
			 * @Option 'top'
			 * @Option 'center'
			 * @Option 'bottom'
			 */
			scaleAlign : 'center',
			/**
			 * @cfg {<link>iChart.Text</link>} 标签的配置项。
			 */
			label : {},
			/**
			 * @cfg {Array} 自定义的标签文本。(默认为空数组)
			 */
			labels : [],
			/**
			 * @cfg {Number} 文本与坐标轴之间的距离。单位px。(默认为6)
			 */
			text_space : 6,
			/**
			 * @cfg {String} 文本相对于坐标轴的对齐方式。(默认为'left')。
			 * 当配置项which为'h'(水平)时，可选值有：
			 * @Option 'left'
			 * @Option 'right' 
			 * 当配置项which为'v'(垂直)时，可选值有：
			 * @Option 'top'
			 * @Option 'bottom'
			 */
			textAlign : 'left',
			/**
			 * @cfg {Number} 文本的小数点位数。此配置项会随刻度值而变化。(默认为0)
			 */
			decimalsnum : 0,
			/**
			 * @inner {String} the style of overlapping(default to 'none') Available value are:
			 * @Option 'square'
			 * @Option 'round'
			 * @Option 'none'
			 */
			join_style : 'none',
			/**
			 * @inner {Number}
			 */
			join_size : 2
		});

		this.registerEvent(
		/**
		 * @event 解析轴文本时候触发，返回值将会覆盖当前值。例如:{text:'',originx:100,originy:100}
		 * @paramter string#text 文本
		 * @paramter int#originx x轴坐标
		 * @paramter int#originy y轴坐标
		 * @paramter int#index 索引
		 * @paramter boolean#last 是否是最后一项
		 */
		'parseText');

		this.items = [];
		this.number = 0;

	},
	isEventValid : function(e) {
		return {
			valid : false
		};
	},
	/**
	 * 按照从左自右,从上至下原则
	 */
	doDraw : function() {},
	doConfig : function() {}
});// @end

/**
 * @overview 2D坐标系的实现类
 * @component#iChart.Coordinate2D
 * @extend#iChart.Component
 */
iChart.Coordinate2D = iChart.extend(iChart.Component,
		{
			configure : function() {
				/**
				 * invoked the super class's configurationuration
				 */
				iChart.Coordinate2D.superclass.configure.apply(this, arguments);

				/**
				 * indicate the component's type
				 */
				this.type = 'coordinate2d';

				this.set({
					/**
					 * @inner {Number}
					 */
					sign_size : 12,
					/**
					 * @inner {Number}
					 */
					sign_space : 5,
					/**
					 * @cfg {Array} 刻度的配置项。请参考<link>iChart.Scale</link>
					 */
					scale : [],
					/**
					 * @cfg {String} 坐标系宽度。可以设置为像素和百分比形式。百分比形式相对于图表可用宽度。(默认为'80%')
					 */
					width:'80%',
					/**
					 * @cfg {String} 坐标系高度。可以设置为像素和百分比形式。百分比形式相对于图表可用高度。(默认为'80%')
					 */
					height:'80%',
					/**
					 * @cfg {Number} 坐标系有效绘图宽度，可以设置为像素和百分比形式。百分比形式相对于坐标系宽度。(默认为'100%')
					 */
					valid_width : '100%',
					/**
					 * @cfg {Number} 坐标系有效绘图高度，可以设置为像素和百分比形式。百分比形式相对于坐标系高度。(默认为'100%')
					 */
					valid_height :  '100%',
					/**
					 * @cfg {Number} 网格的宽度值。(默认为1)
					 */
					grid_line_width : 1,
					/**
					 * @cfg {String} 网格的颜色值。(默认为'#dbe1e1')
					 */
					grid_color : '#dbe1e1',
					/**
					 * @cfg {Object} 配置水平坐标轴方向网格的样式。(default to empty object)。
					 * 对象子配置项:
					 * @Option solid {Boolean} True to draw a solid line.else draw a dotted line.(default to true)
					 * @Option size {Number} Specifies size of line segment when solid is false.(default to 10)
					 * @Option fator {Number} Specifies the times to size(default to 1)
					 * @Option width {Number} Specifies the width of grid line.(default to 1)
					 * @Option color {String} Specifies the color of grid line.(default to '#dbe1e1')
					 */
					gridHStyle : {},
					/**
					 * @cfg {Object} 配置垂直坐标轴方向网格的样式。(default to empty object)。
					 * 对象子配置项:
					 * @Option solid {Boolean} True to draw a solid line.else draw a dotted line.(default to true)
					 * @Option size {Number} Specifies size of line segment when solid is false.(default to 10)
					 * @Option fator {Number} Specifies the times to size(default to 1)
					 * @Option width {Number} Specifies the width of grid line.(default to 1)
					 * @Option color {String} Specifies the color of grid line.(default to '#dbe1e1')
					 */
					gridVStyle : {},
					/**
					 * @cfg {Boolean} 网格是否可见。(默认为true)
					 */
					gridlinesVisible : true,
					/**
					 * @cfg {Boolean} 指示是否网格与刻度保持一致。此选项生效的前提是没有指定grids配置项。为True时，如果<link>iChart.Scale</link>也配置了此项，则此子项为准。(默认为true)
					 */
					scale2grid : true,
					/**
					 * @cfg {Object} 配置自定义网格线。提供水平和垂直网格的配置。水平方向由horizontal指定，垂直方向由vertical指定。
					 * 配置网格有以下两个属性： 
					 * way:网格生成方式(默认为'share_alike') 
					 *    可选值:
					 *    @Option share_alike 指定网格的数量(线条数-1)。
					 *    @Option given_value 给出网格之间间距。
					 * value: 根据way的设置，其代表各自的给定值。
					 * 代码示例:
					 * { 
					 *   horizontal: { way:'share_alike', value:10 } 
					 *   vertical: { way:'given_value', value:40 } 
					 *  }
					 */
					grids : undefined,
					/**
					 * @cfg {Boolean} 为true将会忽略与有值的坐标轴重合的网格。(默认为true)
					 */
					ignoreOverlap : true,
					/**
					 * @cfg {Boolean} 为true将会忽略与坐标轴重合的网格。与ignoreOverlap的区别是这会忽略2个边，而ignoreOverlap紧紧忽略配置了轴线的边。(默认为false)
					 */
					ignoreEdge : false,
					/**
					 * @inner {String} Specifies the label on x-axis
					 */
					xlabel : '',
					/**
					 * @inner {String} Specifies the label on y-axis
					 */
					ylabel : '',
					/**
					 * @cfg {Boolean} 是否应用隔行变色。前提是需要设置<link>background_color</link>配置项(默认为true)
					 */
					striped : true,
					/**
					 * @cfg {String} 背景颜色，设置为null则表现为透明。(默认为null)
					 */
					background_color : 0,
					/**
					 * @cfg {String} 隔行变色的方向。(默认为'v')
					 * 可选值:
					 * @Option 'h' 水平
					 * @Option 'v' 垂直
					 */
					striped_direction : 'v',
					/**
					 * @cfg {float(0.01 - 0.5)} 应用隔行变色后变色程度的因子,相对于background-color,值越大变化越大。(默认为'0.01')
					 */
					striped_factor:0.01,
					/**
					 * @cfg {Object} 十字线的配置(默认的enable为false).请参考<link>iChart.CrossHair</link>
					 * 说明:此配置有一个额外的属性enable表示是否开去十字线(默认为false)
					 */
					crosshair : {
						enable : false
					},
					/**
					 * @cfg {Number} 必配置项,坐标系的宽度。(默认为undefined)
					 */
					width : undefined,
					/**
					 * @cfg {Number} 必配置项,坐标系的高度。(默认为undefined)
					 */
					height : undefined,
					/**
					 * @cfg {Number}设置绘图区的组件的显示层级为-1，使其在最下层显示。
					 */
					z_index : -1,
					/**
					 * @cfg {Object} 坐标轴轴线的配置项。
					 * 可配置属性值:
					 * @Option enable {Boolean} 是否启用轴配置(default to true)
					 * @Option color {String} 轴的颜色.(default to '#666666')
					 * @Option width {Number/Array} 轴的宽度, 如果给出数组，则为四个边的宽度，例如:[1,0,0,1](上-右-下-左).(默认为1)
					 */
					axis : {
						enable : true,
						color : '#666666',
						width : 1
					}
				});

				this.registerEvent();

				this.scale = [];
				this.gridlines = [];
			},
			getScale : function(p) {
				for ( var i = 0; i < this.scale.length; i++) {
					var k = this.scale[i];
					if (k.get('position') == p) {
						return {
							start : k.get('start_scale'),
							end : k.get('end_scale'),
							distance : k.get('end_scale') - k.get('start_scale')
						};
					}
				}
				return {
					start : 0,
					end : 0,
					distance : 0
				};
			}
		});// @end
/**
 * @overview 3D坐标系的实现类
 * @component#iChart.Coordinate3D
 * @extend#iChart.Coordinate2D
 */
iChart.Coordinate3D = iChart.extend(iChart.Coordinate2D, {
	configure : function() {
		/**
		 * invoked the super class's configurationuration
		 */
		iChart.Coordinate3D.superclass.configure.apply(this, arguments);

		/**
		 * indicate the component's type
		 */
		this.type = 'coordinate3d';
		this.dimension = iChart._3D;

		this.set({
			/**
			 * @cfg {Number(0~90)} 3D效果中x轴角度。一般由图表统一给出此配置项。(默认为60)
			 */
			xAngle:60,
			/**
			 * @cfg {Number(0~90)} 3D效果中y轴角度。一般由图表统一给出此配置项。(默认为20)
			 */
			yAngle:20,
			xAngle_ : undefined,
			yAngle_ : undefined,
			/**
			 * @cfg {Number} 3D效果中z轴的深度。一般由图表统一给出此配置项。(默认为0)
			 */
			zHeight : 0,
			/**
			 * @cfg {Number} 3D效果中，坐标系底座的高度。(默认为22)
			 */
			pedestal_height : 22,
			/**
			 * @cfg {Number}3D效果中，坐标系背部面板的厚度。(默认为20)
			 */
			board_deep : 20,
			/**
			 * @cfg {Boolean} 为true则显示左侧的面板。(默认为true)
			 */
			left_board:true,
			/**
			 * @cfg {Boolean} 覆盖默认值。默认启用渐变效果。
			 */
			gradient : true,
			/**
			 * @cfg {float} 覆盖默认值。设置颜色因子的值为0.18。
			 */
			color_factor : 0.18,
			/**
			 * @cfg {Boolean} 覆盖默认值。设置忽略与边缘重合的网格线。
			 */
			ignoreEdge : true,
			/**
			 * @cfg {Boolean} 覆盖默认值。关闭隔行变色。
			 */
			striped : false,
			/**
			 * @cfg {String} 覆盖默认值。设置网格的颜色为'#a4ad96'。
			 */
			grid_color : '#a4ad96',
			/**
			 * @cfg {String} 覆盖默认值。设置网格的颜色为'#d6dbd2'。
			 */
			background_color : '#d6dbd2',
			/**
			 * @cfg {Number} 覆盖默认值。设置阴影x轴偏移为4。
			 */
			shadow_offsetx : 4,
			/**
			 * @cfg {Number} 覆盖默认值。设置阴影y轴偏移为2。
			 */
			shadow_offsety : 2,
			/**
			 * @cfg {Array} 自定义3D坐标系中6个面板的样式。如果给出长度小于6，则用<link>background_color</link>代替。
			 * 每个配置项的可见属性为：
			 * @Option color 背景墙颜色
			 * @Option alpha 背景墙透明度
			 */
			wall_style : [],
			/**
			 * @cfg {Boolean} 覆盖默认值。关闭轴线的设置。
			 */
			axis : {
				enable : false
			}
		});
	},
	doDraw : function(opts) {},
	doConfig : function() {}
});// @end
